#include "MyFmc.h"



//FLASH擦除
//参数：start  要擦除的起始地址
//参数：num		 要擦除的页个数
void GD32_EraseFlash(uint32_t start,uint16_t num)
{
	//解锁FMC
	fmc_unlock();
	//循环擦除
	for(uint16_t i=0;i<num;i++)
	{
		//擦除一页
		fmc_page_erase((Flash_Start_addr+start*1024)+(1024*i));
	}
	//加锁FMC
	fmc_lock();
}

//FLASH写入
//参数：addr  	 要写入的起始地址
//参数：wdata		 要写入的数组
//参数：num 		 要写入的数据量
void GD32_WriteFlash(uint32_t addr,uint32_t* wdata,uint32_t num)
{
	//解锁FMC
	fmc_unlock();
	//循环写入
	while(num)
	{
		//向addr起始位置，写入4个字节
		fmc_word_program(addr,*wdata);
		//写入地址偏移4
		addr += 4;
		//剩余数据量减4
		num -= 4;
		//写入指针偏移
		wdata++;
	}
	//加锁FMC
	fmc_lock();
}

